Інформація про новину
  • Переглядів: 17121
  • Дата: 15-09-2020, 10:51
15-09-2020, 10:51

4.4. Величини в алгоритмах із циклами

Категорія: Інформатика





Попередня сторінка:  4.3. Величини в алгоритмах з розгалужен...
Наступна сторінка:   Cловничок термінів з курсу Інформатик...

1. Який фрагмент алгоритму називається циклом?

2. Що називається тілом циклу?

3. Чим відрізняється цикл з лічильником від циклу з передумовою?

Величини в циклах з лічильником

Величини можуть використовуватися й у циклах з лічильником. Блок-схему циклу з лічильником наведено на малюнку 4.26. Нагадаємо, що цикл з лічильником використовується в алгоритмах у випадках, коли перед його виконанням відомо, скільки разів повинні виконатися команди тіла циклу.

Розглянемо як приклад алгоритм, що містить цикл

3 лічильником і в якому використовуються величини.

Задача 1. За першу годину туристи пройшли

4 км, а за кожну наступну годину проходили на 0,5 км менше, ніж за попередню. Який шлях вони пройшли за 3 год?

Створимо математичну модель ситуації, описаної в цій задачі. Для її розв’язування потрібно обчислити суму трьох чисел, перше з яких дорівнює 4, а кожне наступне на 0,5 менше, ніж попереднє. Використаємо для цього дві змінні: s - для загального пройденого шляху (на початку її значення має дорівнювати 0, бо ще ніякий шлях не пройдено) і а-для шляху, пройденого за кожну годину (на початку її значення має дорівнювати 4 - шлях, що буде пройдено за першу годину). Блок-схему алгоритму розв’язування цієї задачі подано на малюнку 4.27.

У розглянутому алгоритмі тіло циклу складається з двох команд: s:=s + aia:=a - 0.5, які виконуватимуться 3 рази.

Розглянемо хід виконання цього алгоритму:

Цей алгоритм у Scratch 2 та в Python виглядатиме так (мал. 4.28):

Розглянемо ще один проект із циклом з лічильником з використанням величин, у якому виконавець малює 5 квадратів, які розташовані один за одним. Довжина сторони першого з квадратів дорівнює а кроків, а довжина сторони кожного наступного на 20 кроків більша.

Створимо математичну модель цього проекту.

Для зберігання довжини сторони потрібно створити змінну, наприклад а, і надати їй певного початкового значення, наприклад ЗО:

Вам відомо, що для малювання одного квадрата з довжиною сторони а кроків використовується такий цикл:

Щоб виконавець намалював 5 квадратів, потрібно цей цикл помістити в цикл з лічильником, що повторюється 5 разів:

Для малювання кожного наступного квадрата потрібно перемістити виконавця в початкову точку його малювання. Для цього потрібно підняти олівець, щоб виконавець переміщувався без малювання, і перемістити його на відстань, що дорівнює довжині сторони останнього квадрата плюс якесь число, наприклад 10. Це число визначатиме відстань між двома квадратами, тобто потрібно використати такі команди:

Сторона кожного наступного квадрата повинна бути на 20 кроків більша за сторону попереднього. Тому перед малюванням чергового квадрата потрібно збільшити значення змінної а, яка й задає довжину сторони квадрата, на 20. Для цього використаємо команду:

Повний вигляд цього проекту з результатом його виконання наведено на малюнку 4.29.

Величини в циклах з передумовою

Величини можуть використовуватися й у циклах з передумовою. Вигляд блок-схеми циклу з передумовою наведено на малюнку 4.30.

Нагадаємо також, що цикл з передумовою використовується в алгоритмах у випадках, коли перед його виконанням не відомо, скільки разів повинні виконатися команди тіла циклу. Виконання команд тіла такого циклу відбувається до настання певної події.

Розглянемо як приклад алгоритм, що містить цикл з передумовою і в якому використовуються величини.

Задача 2. За першу годину туристична група пройшла 7 км, а за кожну наступну годину проходила на 1 км менше, ніж за попередню. Скільки годин потрібно йти туристичній групі, щоб пройти шлях, який перевищує 15 км?

Створимо математичну модель ситуації, описаної в цій задачі. Для її розв’язування використаємо три змінні:

• s - для загального пройденого шляху (на початку її значення має дорівнювати 0, бо ще ніякий шлях не пройдено);

• а- для шляху, пройденого за кожну годину (на початку її значення має дорівнювати 7 - шлях, що буде пройдено за першу годину, а кожне наступне її значення має бути на 1 менше від попереднього);

• п - для кількості пройдених годин (на початку її значення має дорівнювати 0).

Блок-схему алгоритму розв’язування цієї задачі наведено на малюнку 4.31.

У розглянутому алгоритмі тіло циклу складається з трьох команд:

Наведемо хід виконання цього алгоритму:

Цей самий алгоритм у Scratch 2 та в Python виглядатиме так (мал. 4.32):

Розглянемо застосування циклу з передумовою з використанням величин ще в одному проекті, у якому виконавець повинен малювати квадрати, що розміщені один за одним. Довжина сторони першого з них дорівнює а кроків, довжина сторони кожного наступного на 20 кроків більша, ніж довжина сторони попереднього. І малювати квадрати потрібно доти, доки довжина його сторони не перевищує 100 кроків.

Створимо математичну модель для цього проекту. Перед циклом потрібно перемісти виконавця в початкову точку, наприклад (-200; 0), увести початкове значення змінної а, наприклад 40. Перед кожним виконанням команд тіла циклу перевіряється умова а < 100 (у Scratch 2: не а > 100). І якщо результат виконання цієї команди Так, то виконуються команди тіла циклу: малюється черговий квадрат, олівець переміщується в точку початку малювання наступного квадрата, довжина сторони квадрата змінюється на 20.

Проект для розв’язування цієї задачі та результат його виконання наведено на малюнку 4.33.

Оскільки в наведеному проекті початкове значення довжини сторони квадрата дорівнює 40 кроків, а довжина сторони кожного наступного квадрата на 20 кроків більша за довжину сторони попереднього, то результатом виконання команди перевірки умови буде Так для чотирьох значень змінної а: 40, 60, 80, 100. Тому виконавець намалював саме 4 квадрати.

Якщо ж, наприклад, початкове значення довжини сторони квадрата задати 5 кроків, а довжина сторони кожного наступного квадрата також на 20 кроків більша за довжину сторони попереднього, то умова не а > 100 (а < 100) буде істинною для п’яти значень змінної а: 5, 25, 45, 65, 85. Тому виконавець намалював би 5 квадратів.

Працюємо з комп'ютером

Увага! Під час роботи з комп’ютером дотримуйтеся вимог безпеки життєдіяльності та санітарно-гігієнічних норм.

Завдання 1. Складіть проект, у якому виконавець намалює 5 прямокутників, розміщених усередині один одного, якщо довжини сторін першого з них дорівнюють а і Ь, а довжини сторін кожного наступного на 20 кроків менші за довжини сторін попереднього (мал. 4.34).

Звертаємо вашу увагу, що оскільки довжини сторін кожного наступного прямокутника на 20 менші за довжини сторін попереднього, то для переміщення в початкове положення для малювання наступного прямокутника виконавцю потрібно зміститися на 10 кроків управо і на 10 кроків униз, тобто збільшити абсцису на 10 і зменшити ординату на 10.

Аля тих, хто працює зі Scratch 2

Для складання проекту:

1. Відкрийте середовище Scratch 2.

2. Створіть у групі блоків Величини дві змінні а і Ь.

3. Розмістіть в Області скриптів блоки з командами для задання початкового положення виконавця, очищення Сцени і задання початкових значень довжин сто-

рін прямокутника:

4. Створіть в Області скриптів цикл для малювання прямокутника з довжинами

сторін а і b:

Перевірте його правильність, запустивши на виконання.

5. в для малювання прямокутника з довжинами

сторін а і b та блок для у блоці з циклу

5 разі в:

6. Розмістіть в Області скриптів у блоці зовнішнього циклу після блока внутрішнього

циклу з вив малювання прямокутника і з коман

дами зменшення довжин сторін наступного :

7. Порівняйте проект, який ви створили, з наве-на 4.35.

8. Збережіть складений проект у вашій папці у файлі з іменем вправа 4.4.1.

9. Запустіть проект на виконання.

10. Проаналізуйте виконання проекту (див. мал. 4.34).

11. Змініть кілька разів початкові значення змінних а і b та відстані між прямокутниками.

12. Запустіть кожного разу проект на виконання.

13. Проаналізуйте кожне виконання проекту.

14. Закрийте середовище Scratch 2.

Лля тих, хто працює з Python

1. Відкрийте середовище IDLE.

2. Створіть нове вікно для введення тексту проекту.

3. Уведіть команди для: приєднання до проекту модуля turtle, підняття олівця, за-дання початкового положення виконавця і початкових значень довжин сторін прямокутника:

4. Уведіть команду циклу з лічильником для повторення команд 5 разів: for і in range(5):

5. Уведіть у циклі for і in range(5) з відступом праворуч від позиції першої літери слова for команду для опускання олівця та цикл для малювання прямокутника з довжинами сторін а і Ь:

Звертаємо вашу увагу, що команди, які записано у внутрішньому циклі, повинні бути розміщені з відступом праворуч від позиції першої літери слова for цього внутрішнього циклу.

6. Уведіть у зовнішньому циклі після команд внутрішнього циклу команди переміщення виконавця в початкове положення для малювання наступного прямокутника і команди зменшення довжин сторін наступного прямокутника:

Звертаємо вашу увагу, що команди, які записано після внутрішнього циклу, повинні бути розміщені з таким самим відступом від лівої межі екрана, як і слово for внутрішнього циклу.

7. Порівняйте проект, який ви створили, з наведеним на малюнку 4.36.

8. Збережіть складений проект у вашій папці у файлі з іменем вправа 4.4.1.

9. Запустіть проект на виконання.

10. Проаналізуйте виконання проекту (див. мал. 4.34).

11. Змініть кілька разів початкові значення змінних а і Ь та відстані між прямокутниками.

12. Запустіть кожного разу проект на виконання.

13. Проаналізуйте кожне виконання проекту.

14. Закрийте всі відкриті вікна.

Завдання 2. Складіть проект, у якому виконавець малює прямокутники, розміщені один поруч з іншим, якщо довжини сторін першого з них дорівнюють а і Ь, а довжини сторін кожного наступного на 5 кроків більші за довжини сторін попереднього, поки площа прямокутника буде не більша за 2000 (мал. 4.37).

На відміну від попередньої задачі, у якій потрібно було створити проект для малювання конкретної кількості прямокутників (5), у цьому проекті кількість прямокутників невідома. Вона визначається умовою, щоб площа кожного з них була не більша за 2000.

Тому у проекті для розв’язування цієї задачі буде використано не цикл з лічильником, а цикл з передумовою.

Для створення такого проекту:

1. Відкрийте середовище розробки та виконання проектів.

2. Розмістіть в Області скриптів або введіть текст проекту, наведений на малюнку 4.38.

3. Збережіть складений проект у вашій папці у файлі з іменем вправа 4.4.2.

4. Запустіть проект на виконання.

5. Проаналізуйте виконання проекту (мал. 4.37).

6. Змініть кілька разів початкові значення змінних а і Ь. Підберіть такі значення цих змінних, щоб виконавець намалював два прямокутники; один прямокутник. Запишіть ці значення в зошит.

7. Запустіть кожного разу проект на виконання.

8. Проаналізуйте кожне виконання проекту.

9. Підберіть такі значення змінних а і Ь, щоб виконавець не намалював жодного прямокутника. Запишіть ці значення в зошит.

10. Запустіть проект на виконання. Поясніть такий результат виконання проекту.

11. Закрийте середовище розробки та виконання проектів.

Найважливіше в цьому пункті

Величини можна використовувати в циклах з лічильником і в циклах з передумовою. Наприклад:

Лайте віаповіаі на запитання

1*. Якою є блок-схема циклу з лічильником? 2*. Як виконуватиметься цикл

Що ви можете сказати про значення змінної х під час виконання цього циклу?

З*. Як виконуватиметься фрагмент

Чому дорівнюватиме значення у після закінчення його виконання? 4*. Якою є блок-схема циклу з передумовою?

5*. Як виконуватиметься цикл

Що можна сказати про значення змінної х під час виконання цього циклу? Якої команди не вистачає в тілі цього циклу? Відповідь поясніть.

6*. Скільки разів виконуватиметься тіло такого циклу:

Чи може тіло такого циклу виконуватися тільки один раз? Відповідь поясніть. Чи може тіло такого циклу не виконуватися жодного разу? Відповідь поясніть.

Виконайте завлання

1*. Складіть у зошиті бпок-схему алгоритму для наведеного фрагмента проекту (мал. 4.39) і запишіть хід його виконання.

2*. Складіть у зошиті блок-схему алгоритму для наведеного фрагмента проекту (мал. 4.40) і запишіть хід його виконання.

3°. Складіть проект для малювання п’яти квадратів з довжиною сторони а кроків, розміщених поруч на відстані 10 кроків один від одного. Для задання значення змінної а використайте блок надати значення (команду присвоювання). Збережіть складений проекту вашій папці у файлі з іменем завдання 4.4.3.

4°. Складіть проект для малювання шести прямокутників з довжинами сторін а і Ь кроків, розміщених один під одним на відстані 10 кроків. Для задання значень змінних а і Ь використайте блок запитати і чекати (команду введення). Збережіть складений проекту вашій папці у файлі з іменем завдання 4.4.4.

5*. Складіть проект для малювання п’яти рівносторонніх трикутників. Довжина сторони кожного наступного на ЗО більша за довжину сторони попереднього, які розміщені один поруч з іншим. Для задання початкового значення сторони використайте блок запитати і чекати (команду введення). Збережіть складений проект у вашій папці у файлі з іменем завдання 4.4.5.

6*. Складіть проект, у якому виконавець малює рівносторонні трикутники, розміщені по діагоналі Сцени (полотна), якщо довжина сторони першого з них дорівнює а кроків, а довжина сторін кожного наступного на 10 кроків більша за довжину сторін попереднього, поки довжина сторони не стане більша за 60 кроків. Збережіть складений проект у вашій папці у файлі з іменем завдання 4.4.6.

7*. Складіть проект, у якому виконавець малює рівносторонні трикутники, розміщені один в одному, якщо довжина сторони першого з них дорівнює а кроків, а довжина сторін кожного наступного на 20 кроків менша від довжини сторін попереднього, поки довжина сторони не стане менша від 20 кроків. Збережіть складений проект у вашій папці у файлі з іменем завдання 4.4.7.

ПРАКТИЧНА РОБОТА № 8

«Проекти із циклами з лічильником з використанням величин»

Увага! Під час роботи з комп’ютером дотримуйтеся вимог безпеки життєдіяльності та санітарно-гігієнічних норм.

1. Складіть у зошиті блок-схему алгоритму для наведеного фрагмента проекту (мал. 4.41) і запишіть хід його виконання.

2. Відкрийте середовище розробки та виконання проектів.

3. Складіть проект для малювання чотирьох квадратів, розміщених поруч. Довжина сторони першого з них дорівнює а кроків, а довжина сторони кожного наступного - на Ь кроків більша за довжину сторони попереднього.

4. Збережіть складений проект у вашій папці у файлі з іменем практична 8.

5. Закрийте середовище розробки та виконання проектів.

ПРАКТИЧНА РОБОТА № 9

«Проекти із циклами з передумовою з використанням величин»

Увага! Під час роботи з комп’ютером дотримуйтеся вимог безпеки життєдіяльності та санітарно-гігієнічних норм.

1. Складіть у зошиті блок-схему алгоритму для наведеного фрагмента проекту (мал. 4.42) і запишіть хід його виконання.

2. Відкрийте середовище розробки та виконання проектів.

3. Складіть проект для малювання квадратів, розміщених поруч, поки периметр квадрата не перевищує 50 кроків. Довжина сторони першого з них дорівнює а кроків, а довжина сторони кожного наступного - на Ь кроків більша за довжину сторони попереднього.

4. Збережіть складений проект у вашій папці у файлі з іменем практична 9.

5. Закрийте середовище розробки та виконання проектів.

 

Додаток. Готуємося до олімпіади з інформатики

Задача. У вас є кілька однакових за розміром кубиків з конструктора Lego. Ви вирішили скласти з них піраміду, з’єднуючи кубики по рядах. У верхньому ряду - один кубик, під ним -два кубики, ще нижче-три, і так далі, поки вистачатиме кубиків. Кожний наступний ряд міститиме на один кубик більше, ніж попередній (мал. Д1). Якщо після заповнення чергового ряду у вас не вистачить кубиків для наступного, то залишок кубиків ви віддасте своєму другові.

Висотою піраміди будемо називати кількість повних рядів у ній. Визначте, якою може бути найбільша висота піраміди, якщо ви знаєте кількість кубиків.

Наприклад, якщо ви маєте 6 кубиків, то піраміда буде складатися з трьох рядів, а якщо кубиків 12, то висота піраміди буде 4 ряди і ще 2 кубики ви віддасте своєму другові.

Розв’язання.

Початковими даними в цій задачі є одне натуральне число х - загальна кількість кубиків. Кінцевим результатом буде натуральне число к- висота піраміди.

Хід подальших міркувань може бути такий:

• із загальної кількості кубиків візьмемо 1, з нього буде утворено перший ряд, а загальна кількість зменшиться на 1;

• якщо загальної кількості, що залишилася, вистачить на другий ряд, то візьмемо 2 кубики, утворимо другий ряд, а загальна кількість зменшиться на 2;

• якщо загальної кількості, що залишилася, вистачить на третій ряд, то візьмемо З кубики, утворимо третій ряд, а загальна кількість зменшиться на З

і т. д.

Для отримання результату потрібно порахувати, скільки разів із загальної кількості, що залишилась після заповнення попереднього ряду, можна взяти кубиків для утворення наступного ряду. У ході міркувань можна побачити закономірність - який номер ряду піраміди, стільки кубиків він містить. Тому алгоритм розв’язування задачі може бути таким: поки загальна кількість кубиків х, що залишилась, більша за номер к наступного ряду, потрібно зменшувати загальну кількість х на к і збільшувати к на 1. Копи кубиків для наступного ряду вже не вистачатиме, номер ряду к буде на 1 більше, ніж висота піраміди.

На малюнку Д2 наведено програму для розв’язування задачі у Scratch 2 та мовою Python.

Поміркуйте самостійно, як зміниться програма, якщо потрібно визначити: скільки кубиків ви віддасте другові після побудови піраміди найбільшої можливої висоти, якщо ви знаєте загальну кількість своїх кубиків.

Чи можете ви запропонувати інший розв’язок цієї задачі? Спробуйте.

 

 

Це матеріал з підручника Інформатика за 7 клас Ривкінд 2020

 




Попередня сторінка:  4.3. Величини в алгоритмах з розгалужен...
Наступна сторінка:   Cловничок термінів з курсу Інформатик...



^